<?php 
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
require_once('libs/feature.php');
require_once('libs/content.php');
function checkPassword($post, $password) {
    // 调试输出
    var_dump($post->password);
    var_dump($password);
    // 原始验证逻辑
    return $post->password === $password;
}
/* 获取资源路径 */
function _getAssets($assets, $type = true)
{
  $assetsURL = "";
  // 是否本地化资源
  if (Helper::options()->AssetsURL) {
    $assetsURL = Helper::options()->AssetsURL . '/' . $assets;
  } else {
    $assetsURL = Helper::options()->themeUrl . '/' . $assets;
  }
  if ($type) echo $assetsURL;
  else return  $assetsURL;
}
/* 获取头像懒加载图 */
function _getAvatarLazyload($type = true)
{
  $str = "";
  if ($type) echo $str;
  else return $str;
}
/* 通过邮箱生成头像地址 */
function _getAvatarByMail($mail)
{
    $gravatarsUrl = Helper::options()->CustomAvatarSource ? Helper::options()->CustomAvatarSource : 'https://gravatar.helingqi.com/wavatar/';
    $mailLower = strtolower($mail);
    $md5MailLower = md5($mailLower);
    $qqMail = str_replace('@qq.com', '', $mailLower);
    if (strstr($mailLower, "qq.com") && is_numeric($qqMail) && strlen($qqMail) < 11 && strlen($qqMail) > 4) {
        echo 'https://thirdqq.qlogo.cn/g?b=qq&nk=' . $qqMail . '&s=100';
    } else {
        echo $gravatarsUrl . $md5MailLower . '?d=mm';
    }
};
function formatTime($time){
    $text = '';
    $time = intval($time);
    $ctime = time();
    $t = $ctime - $time; //时间差
    if ($t < 0) {
        return date('Y-m-d', $time);
    }
    $y = date('Y', $ctime) - date('Y', $time);//是否跨年
    switch ($t) {
        case $t == 0:
            $text = '刚刚';
            break;
        case $t < 60://一分钟内
            $text = $t . '秒前';
            break;
        case $t < 3600://一小时内
            $text = floor($t / 60) . '分钟前';
            break;
        case $t < 86400://一天内
            $text = floor($t / 3600) . '小时前'; // 一天内
            break;
        case $t < 2592000://30天内
            if($time > strtotime(date('Ymd',strtotime("-1 day")))) {
                $text = '昨天';
        } elseif($time > strtotime(date('Ymd',strtotime("-2 days")))) {
            $text = '前天';
        } else {
            $text = floor($t / 86400) . '天前';
        }
        break;
        case $t < 31536000 && $y == 0://一年内 不跨年
            $m = date('m', $ctime) - date('m', $time) -1;
        if($m == 0) {
            $text = floor($t / 86400) . '天前';
            } else {
                $text = $m . '个月前';
            }
            break;
        case $t < 31536000 && $y > 0://一年内 跨年
            $text = (11 - date('m', $time) + date('m', $ctime)) . '个月前';
            break;
        default:
            $text = (date('Y', $ctime) - date('Y', $time)) . '年前';
            break;
    }
    return $text;
}
/**
 * 统计Typecho文章中的图片数量
 * 
 * @param string $content 文章内容
 * @return int 图片数量
 */
function countImagesInPost($content) {
    preg_match_all('/<img[^>]+>/i', $content, $matches);
    return count($matches[0]);
}
// 文章热度
function get_post_view($archive)
{
    $cid    = $archive->cid;
    $db     = Typecho_Db::get();
    $prefix = $db->getPrefix();
    if (!array_key_exists('views', $db->fetchRow($db->select()->from('table.contents')->page(1,1)))) {
        $db->query('ALTER TABLE `' . $prefix . 'contents` ADD `views` INT(10) DEFAULT 0;');
        echo 0;
        return;
    }
    $row = $db->fetchRow($db->select('views')->from('table.contents')->where('cid = ?', $cid));
    if ($archive->is('single')) {
 $views = Typecho_Cookie::get('extend_contents_views');
        if(empty($views)){
            $views = array();
        }else{
            $views = explode(',', $views);
        }
if(!in_array($cid,$views)){
       $db->query($db->update('table.contents')->rows(array('views' => (int) $row['views'] + 1))->where('cid = ?', $cid));
array_push($views, $cid);
            $views = implode(',', $views);
            Typecho_Cookie::set('extend_contents_views', $views); //记录查看cookie
        }
    }
    echo $row['views'];
}
/**
 * 从文章内容获取图片（缩略图）
 * @param string $content 文章内容
 * @return array 图片URL数组
 */
/* 获取列表缩略图 */
function _getThumbnails($item)
{
  $result = [];
  $pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i';
  $patternMD = '/\!\[.*?\]\((http(s)?:\/\/.*?(jpg|jpeg|gif|png|webp))/i';
  $patternMDfoot = '/\[.*?\]:\s*(http(s)?:\/\/.*?(jpg|jpeg|gif|png|webp))/i';
  
  /* 如果填写了自定义缩略图，则优先显示填写的缩略图 */
  if ($item->fields->thumb) {
    $fields_thumb_arr = explode("\r\n", $item->fields->thumb);
    foreach ($fields_thumb_arr as $list) $result[] = $list;
  }
  
  /* 如果匹配到正则，则继续补充匹配到的图片 */
  if (preg_match_all($pattern, $item->content, $thumbUrl)) {
    foreach ($thumbUrl[1] as $list) $result[] = $list;
  }
  if (preg_match_all($patternMD, $item->content, $thumbUrl)) {
    foreach ($thumbUrl[1] as $list) $result[] = $list;
  }
  if (preg_match_all($patternMDfoot, $item->content, $thumbUrl)) {
    foreach ($thumbUrl[1] as $list) $result[] = $list;
  }
  
  /* 如果没有找到任何图片，使用全站图片或随机图片作为缩略图 */
  if (empty($result)) {
    $public_thumb = Helper::options()->public_thumb;
    if ($public_thumb) {
      $result[] = $public_thumb;
    } else {
      $result[] = 'https://picsum.photos/1900/1200?random=' . $item->cid;
    }
  }
  
  return $result;
}

// 获取页面的自定义字段值
function getPageField($cid, $fieldName) {
    $db = Typecho_Db::get();
    $field = $db->fetchRow($db->select('str_value')
        ->from('table.fields')
        ->where('cid = ?', $cid)
        ->where('name = ?', $fieldName));
    
    return $field ? $field['str_value'] : '';
}

// 获取完整的页面信息（包含自定义字段）
function getFullPageInfoBySlug($slug) {
    $db = Typecho_Db::get();
    
    // 获取页面基本信息
    $page = $db->fetchRow($db->select('cid', 'title')
        ->from('table.contents')
        ->where('type = ?', 'page')
        ->where('slug = ?', $slug)
        ->limit(1));
    
    if (!$page) return false;
    
    // 获取评论数量
    $count = $db->fetchObject($db->select(array('COUNT(coid)' => 'num'))
        ->from('table.comments')
        ->where('cid = ?', $page['cid'])
        ->where('status = ?', 'approved'))->num;
    
    // 获取自定义图标字段
    $icon = getPageField($page['cid'], 'icon');
    
    return array(
        'title' => $page['title'],
        'slug' => $slug,
        'count' => $count ?: 0,
        'icon' => $icon ?: '<i class="fa fa-paper-plane"></i>' // 默认图标
    );
}
/* 获取全局懒加载图 */
// function _getLazyload($type = true)
// {
//     // 从主题选项中获取 Lazyload 值，如果没有设置则使用默认的 base64 占位图
//     $lazyload = Helper::options()->Lazyload ?: '';
    
//     if ($type) {
//         echo $lazyload;
//     } else {
//         return $lazyload;
//     }
// }
// 建站时间
function _get_blog_days() {
    $start_date = Helper::options()->blog_days; // 修改为你的建站日期
    $now = time();
    $diff = $now - strtotime($start_date);
    return floor($diff / (60 * 60 * 24));
}
// 推荐文章
function getPostInfoByIds($cids) {
    $db = Typecho_Db::get();
    $posts = array();
    
    if (!empty($cids)) {
        $cidArray = explode('||', $cids);
        $cidArray = array_slice($cidArray, 0, 3); // 限制最多3个
        
        foreach ($cidArray as $cid) {
            $cid = trim($cid);
            if (is_numeric($cid)) {
                $post = $db->fetchRow($db->select()
                    ->from('table.contents')
                    ->where('cid = ?', $cid)
                    ->where('type = ?', 'post')
                    ->where('status = ?', 'publish'));
                
                if ($post) {
                    $posts[] = array(
                        'title' => $post['title'],
                        'permalink' => Typecho_Router::url('post', $post)
                    );
                }
            }
        }
    }
    
    return $posts;
}
// 从推荐文章内容提取描述
function getDescription($text, $length = 100) {
    $text = strip_tags($text);
    $text = str_replace(array("\n", "\r", "\t"), ' ', $text);
    return Typecho_Common::subStr($text, 0, $length, '...');
}
function getRandomPosts($limit = 10){
    $db = Typecho_Db::get();
    $result = $db->fetchAll($db->select()->from('table.contents')
        ->where('status = ?','publish')
        ->where('type = ?', 'post')
        ->where('created <= unix_timestamp(now())', 'post')
        ->limit($limit)
        ->order('RAND()')
    );
    
    if($result){
        $i=1;
        foreach($result as $val){
            $val = Typecho_Widget::widget('Widget_Abstract_Contents')->push($val);
            $post_title = htmlspecialchars($val['title']);
            $permalink = $val['permalink'];
            
            // 获取文章摘要
            $description = '';
            if (!empty($val['description'])) {
                $description = htmlspecialchars($val['description']);
            } else {
                // 如果没有设置摘要，从内容中截取前100个字符
                $description = mb_substr(strip_tags($val['text']), 0, 100, 'UTF-8');
                if (mb_strlen(strip_tags($val['text'])) > 100) {
                    $description .= '...';
                }
            }
            echo '<p class="post-description line-clamp">'.$description.'</p>';
            echo '<a class="line-clamp" href="'.$permalink.'" title="'.$post_title.'" target="_blank">'.$post_title.'</a>';
            $i++;
        }
    }
}

function themeFields($layout) {
    
    $thumb = new Typecho_Widget_Helper_Form_Element_Text('thumb', NULL, NULL, _t('缩略图'));
        $layout->addItem($thumb);
    ?>
    <style>#custom-field textarea {width:100%;border:0;outline:thin solid #E9ECEF;line-height:1.2;padding: .2em;border-radius: .2em;min-height: 8em;background: #F8F9FA;}#custom-field input[type="text"]{width: 100%;border: 0;outline: thin solid #E9ECEF;line-height: 1.2;padding: .2em;min-height: 3em;border-radius: .2em;background: #F8F9FA;}</style>
    <?
    if($_SERVER['SCRIPT_NAME']=="/admin/write-post.php"){
        $article_type= new Typecho_Widget_Helper_Form_Element_Radio('article_type',array('article' => _t('普通样式'),'say' => _t('长图样式'),'photos' => _t('磨砂样式'),'Multi' => _t('多图样式'),'music' => _t('透明样式'),'books' => _t('书单样式')),'article',_t('文章类型'),_t("选择文章类型首页输出"));
        $layout->addItem($article_type);
        
        $books_cover = new Typecho_Widget_Helper_Form_Element_Text('books_cover', NULL, NULL, _t('书籍封面'), _t('这里填写书籍封面的链接'));
        $layout->addItem($books_cover);
        
        $books_content = new Typecho_Widget_Helper_Form_Element_Textarea('books_content', NULL, NULL, _t('书籍信息'), _t('这个是书籍的信息一行一条信息<br>第一行是作者笔名<br>第二行是全文数字<br>第三行是版权转化<br>第四行是积分'));
        $layout->addItem($books_content);
        
    }
    if($_SERVER['SCRIPT_NAME']=="/admin/write-page.php"){
        $icon = new Typecho_Widget_Helper_Form_Element_Text('icon', NULL, NULL, _t('图标'), _t('推荐使用<a target="_blank" href="https://fontawesome.com.cn/v4/icons">图标页面</a> <br> i 开头。也可以用其他的图标，引入图标链接先。<br>也可以使用emoji图标.格式：使用i标签包裹emoji图标'));
        $layout->addItem($icon);
        $thumb = new Typecho_Widget_Helper_Form_Element_Text('thumb', NULL, NULL, _t('背景图'), _t('背景图链接 没有填写则随机'));
        $layout->addItem($thumb);
        $css = new Typecho_Widget_Helper_Form_Element_Textarea('css', NULL, NULL, _t('css'), _t('添加该页面css内容'));
        $layout->addItem($css);
    }
    
}
function themeConfig($form) {
    // ======================
    // 基础设置
    // ======================
    $AssetsURL = new Typecho_Widget_Helper_Form_Element_Text(
        'AssetsURL',
        NULL,
        NULL,
        _t('📦 静态资源CDN地址'),
        _t('填写静态资源CDN地址前缀，例如：https://cdn.example.com/assets<br>'.
           '留空则使用本地资源')
    );

    $CustomAvatarSource = new Typecho_Widget_Helper_Form_Element_Text(
        'CustomAvatarSource',
        NULL,
        NULL,
        _t('👤 自定义头像源'),
        _t('填写自定义Gravatar镜像地址，例如：https://gravatar.example.com/avatar/<br>'.
           '注意：地址必须以斜杠(/)结尾')
    );
    
    $form->addInput($CustomAvatarSource);
    $form->addInput($AssetsURL);

    // ======================
    // 外观
    // ======================
    $Favicon = new Typecho_Widget_Helper_Form_Element_Textarea(
        'Favicon',
        NULL,
        NULL,
        _t('🎨 网站Favicon'),
        _t('填写Favicon图片URL或Base64编码<br>'.
           '推荐使用：<a href="//tool.lu/favicon" target="_blank">在线Favicon生成工具</a>')
    );

    $CustomFont = new Typecho_Widget_Helper_Form_Element_Text(
        'CustomFont',
        NULL,
        NULL,
        _t('🔤 自定义字体'),
        _t('填写WOFF格式字体URL，例如：https://cdn.example.com/font.woff<br>'.
           '留空则使用系统默认字体')
    );
    
    $form->addInput($CustomFont);
    $form->addInput($Favicon);

    // ======================
    // 首页展示
    // ======================
    $index_display_type = new Typecho_Widget_Helper_Form_Element_Radio(
        'index_display_type',
        array(
            'image' => _t('单张图片'),
            'video' => _t('视频'),
            'banner' => _t('幻灯片'),
        ),
        'image',
        _t('🏠 首页展示类型'),
        _t('选择首页展示的内容类型')
    );
    
    $Index_banner = new Typecho_Widget_Helper_Form_Element_Textarea(
        'Index_banner',
        NULL,
        NULL,
        _t('🖼️ 首页幻灯片'),
        _t('格式：标题 || 图片URL || 链接URL<br>'.
           '每行一个幻灯片，至少需要两个')
    );

    $Index_video = new Typecho_Widget_Helper_Form_Element_Text(
        'Index_video',
        NULL,
        NULL,
        _t('🎬 首页视频'),
        _t('填写首页展示的视频URL')
    );

    $Index_images = new Typecho_Widget_Helper_Form_Element_Text(
        'Index_images',
        NULL,
        NULL,
        _t('🖼️ 首页图片'),
        _t('填写首页展示的图片URL')
    );
    
    $form->addInput($index_display_type);
    $form->addInput($Index_images);
    $form->addInput($Index_video);
    $form->addInput($Index_banner);
    
    // ======================
    // 导航自定义设置
    // ======================
    $custom_category_name = new Typecho_Widget_Helper_Form_Element_Text(
        'custom_category_name',
        NULL,
        '分类',
        _t('📚 分类名称自定义'),
        _t('设置分类的显示名称（如改为"合集"），留空则使用默认"分类"')
    );
    $custom_page_name = new Typecho_Widget_Helper_Form_Element_Text(
        'custom_page_name',
        NULL,
        '页面',
        _t('📄 页面名称自定义'),
        _t('设置页面的显示名称（如改为"组件"），留空则使用默认"页面"')
    );
    
    $form->addInput($custom_category_name);
    $form->addInput($custom_page_name);
    
    // ======================
    // 文章相关
    // ======================
    $protectedBgImage = new Typecho_Widget_Helper_Form_Element_Text(
        'protectedBgImage',
        NULL,
        'https://picsum.photos/1900/1200',
        _t('🔒 密码保护背景图'),
        _t('填写密码保护文章的背景图URL<br>'.
           '建议使用高分辨率图片')
    );

    $public_thumb = new Typecho_Widget_Helper_Form_Element_Text(
        'public_thumb',
        NULL,
        NULL,
        _t('📷 默认缩略图'),
        _t('填写文章默认缩略图URL<br>'.
           '留空则使用随机图片API,建议填写')
    );
    
    $form->addInput($protectedBgImage);
    $form->addInput($public_thumb);

    // ======================
    // 页脚设置
    // ======================
    $blog_days = new Typecho_Widget_Helper_Form_Element_Text(
        'blog_days',
        NULL,
        '2015-01-01',
        _t('📅 建站日期'),
        _t('格式：YYYY-MM-DD，例如：2015-01-01')
    );

    $featuredPosts = new Typecho_Widget_Helper_Form_Element_Text(
        'featuredPosts',
        NULL,
        NULL,
        _t('⭐ 特色文章'),
        _t('填写文章CID，用"||"分隔，最多3个<br>'.
           '例如：123||456||789')
    );

    $footer_signature = new Typecho_Widget_Helper_Form_Element_Text(
        'footer_signature',
        NULL,
        '让每个平凡的日子都闪着光',
        _t('✍️ 页脚签名'),
        _t('显示在页脚左侧的文字')
    );

    $footer_poem = new Typecho_Widget_Helper_Form_Element_Text(
        'footer_poem',
        NULL,
        '「记录每一刻的微光，编织时光的纹理」',
        _t('📜 页脚文案'),
        _t('显示在页脚中间的诗句或格言')
    );
    
    $footer_record = new Typecho_Widget_Helper_Form_Element_Text(
        'footer_record',
        NULL,
        NULL,
        _t('🏛️ 备案信息'),
        _t('填写网站备案号，显示在页脚右侧')
    );
    
    $form->addInput($blog_days);
    $form->addInput($featuredPosts);
    $form->addInput($footer_signature);
    $form->addInput($footer_poem);
    $form->addInput($footer_record);
}